package com.qf.collection.treeset;

import com.qf.collection.Duck;

import java.util.Arrays;
import java.util.Comparator;
import java.util.TreeSet;

/**
 * 演示TreeSet排序的用法
 * 1. 如果元素的类已经实现了 Comparable接口，那么可以直接将元素放入 TreeSet中，
 * 2. 如果元素没有实现Comparable接口，那么可以在构造TreeSet时传入一个 比较器对象
 * 3. 如果元素的类已经实现了 Comparable接口，同时也传入了比较器对象 ，那么会按照比较器对象的逻辑进行排序
 */
public class TreeSetSortDemo {
    public static void main(String[] args) {

        Duck duck1 = new Duck("z唐老鸭", 50);
        Duck duck2 = new Duck("c可达鸭", 10);
        Duck duck3 = new Duck("a扁嘴仑", 20);

        Duck[] duckArr = new Duck[3];
        duckArr[0]=duck1;
        duckArr[1]=duck2;
        duckArr[2]=duck3;

//        Arrays.sort(duckArr, (o1, o2) -> o1.getName().compareTo(o2.getName()));
        Arrays.sort(duckArr);

        System.out.println(duckArr);
        System.out.println(Arrays.asList(duckArr));

        System.out.println("=====================");

        //如果不想改动 集合中元素类的代码，也可添加一个 比较器对象
//        TreeSet<Duck> duckSet = new TreeSet<>((o1, o2) -> o1.getName().compareTo(o2.getName()));
        TreeSet<Duck> duckSet = new TreeSet<>();
        duckSet.addAll(Arrays.asList(duck1,duck2,duck3));
        System.out.println(duckSet);

    }
}
